package com.smart4j.framework.proxy.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * description: 动态代理。 使用JDK提供的动态代理 。 必须实现接口  java.lang.reflect.InvocationHandler
 *  JDK动态代理是针对接口的代理。 
 * @version v1.0
 * @author w
 * @date 2018年9月2日下午5:11:09
 */
public class DynamicProxy implements InvocationHandler {
	
	/**
	 * 目标对象 
	 */
	private Object target ;
	
	public DynamicProxy(Object target) {
		super();
		this.target = target;
	}



	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		long start = System.nanoTime();
		System.out.println("开始执行： 。。。");
		// 执行代理对象的方法 
		Object result = method.invoke(target, args);
		System.out.println("执行结束，耗时： "+(System.nanoTime()-start) +" ns 纳秒");
		return result;
	}

}
